package com.munhrasoft.webloja.views;

import java.io.IOException;
import java.io.Serializable;
import java.util.logging.Logger;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;

import com.munhrasoft.webloja.beans.AplicacaoBean;
import com.munhrasoft.webloja.beans.ProdutosBean;
import com.munhrasoft.webloja.beans.UsrVendBean;
import com.munhrasoft.webloja.modelo.Produtos;
import com.munhrasoft.webloja.modelo.Vendedores;
import com.munhrasoft.webloja.util.Utilidades;
import com.mysql.jdbc.Blob;

import java.sql.SQLException;



@ManagedBean
@SessionScoped
public class ProdutosViewBean implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = -1683213689168847265L;
	private static Logger logger = Logger.getLogger(ProdutosViewBean.class.getName());
	private Produtos produto = new Produtos();	
	private StreamedContent produtoImagem;
	private boolean mostraImagem;
	private boolean renderPasso1 = true;
	private boolean renderPasso2;
	private boolean renderContinuar;
	private Utilidades utilidades = new Utilidades();

	@EJB
	ProdutosBean produtoBean;
	
	@EJB
	UsrVendBean vendedorBean;
		
	public Produtos getProduto() {
		return produto;
	}

	public void setProduto(Produtos produto) {
		this.produto = produto;
	}

	public StreamedContent getProdutoImagem() {
		return produtoImagem;
	}

	public void setProdutoImagem(StreamedContent produtoImagem) {
		this.produtoImagem = produtoImagem;
	}


	public boolean isMostraImagem() {
		return mostraImagem;
	}

	public void setMostraImagem(boolean mostraImagem) {
		this.mostraImagem = mostraImagem;
	}

	public boolean isRenderPasso1() {
		return renderPasso1;
	}

	public void setRenderPasso1(boolean renderPasso1) {
		this.renderPasso1 = renderPasso1;
	}

	public boolean isRenderPasso2() {
		return renderPasso2;
	}

	public void setRenderPasso2(boolean renderPasso2) {
		this.renderPasso2 = renderPasso2;
	}



	public boolean isRenderContinuar() {
		return renderContinuar;
	}

	public void setRenderContinuar(boolean renderContinuar) {
		this.renderContinuar = renderContinuar;
	}

	public void contCadastro(ActionEvent actionEvent){
		logger.info("Continua o cadastro ...");
		this.setRenderPasso1(false);
		this.setRenderPasso2(true);
	}

	public String salvarProduto(){
		Vendedores vendedor;
		
		InitialContext initContext;
		try {
			initContext = new InitialContext();
			AplicacaoBean appBean = (AplicacaoBean) 
			initContext.lookup("java:global/webloja/AplicacaoBean");
			logger.info("Vendedor associado ... "+appBean.getVendedorLogado().getEmail());
			vendedor = appBean.getVendedorLogado();
			vendedor = vendedorBean.load(vendedor.getVendedorId());
			vendedorBean.update(vendedor);
			produto.setVendedorId(vendedor);
		} catch (NamingException e) {
			e.printStackTrace();
		}
		//produto.setVendedorId(headerViewBean.getVendedorLogado());
		produtoBean.save(produto);
		utilidades.mostrarMensagem("Cadastro de produtos","Produto salvo com sucesso");
		logger.info("Produto salvo com sucesso");
		produto = new Produtos();
		mostraImagem = false;
		renderPasso1 = true;
		renderPasso2 = false;
		renderContinuar = false;
		
		return "loginvendedores";
	}

	public void uploadDeArquivo(FileUploadEvent event){
		logger.info("Fazendo upload do arquivo !"+event.getFile().getFileName());
		produto.setFoto(event.getFile().getContents());
		try {
			produtoImagem = new DefaultStreamedContent(event.getFile().getInputstream(),"image/jpeg");
			setRenderContinuar(true);
			logger.info("Carregando imagem para ser visualizada ....");
			utilidades.mostrarMensagem("Cadastro de produtos","Imagem enviada com sucesso");
			produto.setTitulo(event.getFile().getFileName());
			//this.setMostraImagem(true);

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}



}
